home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / DirectShow / DMO / GargleDMO / GargDMOProp.cpp next >
Encoding:
C/C++ Source or Header  |  2001-10-08  |  2.6 KB  |  97 lines

  1. //------------------------------------------------------------------------------
  2. // File: GargDMOProp.cpp
  3. //
  4. // Desc: DirectShow sample code - implementation of CGargDMOProp class.
  5. //
  6. // Copyright (c) 2000-2001 Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8.  
  9.  
  10. #include "stdafx.h"
  11. #define FIX_LOCK_NAME
  12. #include <param.h>
  13. #include <dmobase.h>
  14. #include "gargle.h"
  15. #include "GargDMOProp.h"
  16.  
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CGargDMOProp
  19.  
  20. const CRadioChoice::ButtonEntry g_rgWaveButtons[] =
  21.     {
  22.         IDC_RADIO_TRIANGLE, GARGLE_FX_WAVE_TRIANGLE,
  23.         IDC_RADIO_SQUARE, GARGLE_FX_WAVE_SQUARE,
  24.         0
  25.     };
  26.  
  27. CGargDMOProp::CGargDMOProp()
  28.   : m_radioWaveform(g_rgWaveButtons),
  29.     m_pIGargleFX( NULL )
  30.  
  31. {
  32.     m_pUnkMarshaler = NULL;
  33.     m_dwTitleID = IDS_TITLEGargDMOProp;
  34.     m_dwHelpFileID = IDS_HELPFILEGargDMOProp;
  35.     m_dwDocStringID = IDS_DOCSTRINGGargDMOProp;
  36.  
  37.     m_rgpHandlers[0] = &m_sliderRate;
  38.     m_rgpHandlers[1] = &m_radioWaveform;
  39.     m_rgpHandlers[2] = NULL;
  40. }
  41.  
  42. STDMETHODIMP CGargDMOProp::SetObjects(ULONG nObjects, IUnknown **ppUnk)
  43. {
  44.     if (nObjects < 1 || nObjects > 1)
  45.         return E_UNEXPECTED;
  46.  
  47.     HRESULT hr = ppUnk[0]->QueryInterface(IID_IGargleDMOSample, reinterpret_cast<void**>(&m_pIGargleFX));
  48.     return hr;
  49. }
  50.  
  51. STDMETHODIMP CGargDMOProp::Apply(void)
  52. {
  53.     if (!m_pIGargleFX)
  54.         return E_UNEXPECTED;
  55.  
  56.     GargleFX garglefx;
  57.     ZeroMemory(&garglefx, sizeof(GargleFX));
  58.  
  59.     garglefx.dwRateHz = static_cast<DWORD>(m_sliderRate.GetValue());
  60.     garglefx.dwWaveShape = m_radioWaveform.GetChoice(*this);
  61.  
  62.     HRESULT hr = m_pIGargleFX->SetAllParameters(&garglefx);
  63.     if (FAILED(hr))
  64.         return hr;
  65.  
  66.     m_bDirty = FALSE;
  67.     return S_OK;
  68. }
  69.  
  70. LRESULT CGargDMOProp::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  71. {
  72.     if (!m_pIGargleFX)
  73.         return 1;
  74.  
  75.     GargleFX garglefx;
  76.     ZeroMemory(&garglefx, sizeof(GargleFX));
  77.     m_pIGargleFX->GetAllParameters(&garglefx);
  78.  
  79.     m_sliderRate.Init(GetDlgItem(IDC_SLIDER_Rate), GetDlgItem(IDC_EDIT_Rate), 1, 1000, true);
  80.     m_sliderRate.SetValue(static_cast<float>(garglefx.dwRateHz));
  81.  
  82.     m_radioWaveform.SetChoice(*this, garglefx.dwWaveShape);
  83.  
  84.     return 1;
  85. }
  86.  
  87. LRESULT CGargDMOProp::OnControlMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  88. {
  89.     LRESULT lr = MessageHandlerChain(m_rgpHandlers, uMsg, wParam, lParam, bHandled);
  90.  
  91.     if (bHandled)
  92.         SetDirty(TRUE);
  93.     return lr;
  94. }
  95.  
  96.  
  97.